#include "FileListDialog.h"
#include <istream>
FileListDialog::FileListDialog(QWidget *parent)
        : QDialog(parent) {
    setWindowTitle("文件列表");
    setModal(true);  // 设置为模态对话框

    QVBoxLayout *layout = new QVBoxLayout(this);

    fileTree = new QTreeWidget(this);
    fileTree->setHeaderLabel("文件列表");

    loadFilesIntoTree(fileTree);  // 加载文件到树形控件
    layout->addWidget(fileTree);  // 将树形控件添加到布局中

    QPushButton *selectButton = new QPushButton("选择", this);
    connect(selectButton, &QPushButton::clicked, this, &FileListDialog::selectFile);  // 选择文件
    layout->addWidget(selectButton);  // 将选择按钮添加到布局中

    QPushButton *deleteButton = new QPushButton("删除", this);
    connect(deleteButton, &QPushButton::clicked, this, &FileListDialog::deleteFile);  // 删除文件
    layout->addWidget(deleteButton);  // 将删除按钮添加到布局中

    setLayout(layout);
}

FileListDialog::~FileListDialog() {}

void FileListDialog::loadFilesIntoTree(QTreeWidget *tree) {
    QDir dir("program/");  // 指定文件夹路径
    QStringList files = dir.entryList(QDir::Files);  // 获取文件列表

    for (const QString &fileName : files) {
        new QTreeWidgetItem(tree, QStringList() << fileName);  // 将文件名添加到树形控件
    }
}

void FileListDialog::selectFile() {
    QTreeWidgetItem *item = fileTree->currentItem();
    if (item) {
        selectedFileName = item->text(0);  // 获取选中的文件名

        emit fileSelected(selectedFileName);  // 发出信号，发送文件名
        accept();  // 关闭对话框
    }
}


void FileListDialog::deleteFile() {
    QTreeWidgetItem *item = fileTree->currentItem();
    if (item) {
        QString fileName = item->text(0);
        if (QMessageBox::question(this, "确认", "确定要删除文件 " + fileName + " 吗？") == QMessageBox::Yes) {
            QDir dir(QDir::currentPath() + "/program/");

            if (dir.remove(fileName)) {
                delete item;  // 从树形控件中删除
            } else {
                QMessageBox::warning(this, "错误", "无法删除文件。");
            }
        }
    }
}


